/*******************************************************************************
 * FilePath    : \00-Inc\AH_Lib_Includes.h
 * Version     : 1.0
 * Brief       :
 * Author      : AndrewHu
 * Company     : Shanghai MacroGiga Electronics CO.,Ltd
 * Email       : Hubinbo@macrogiga.com
 * Date        : 2020-03-24 15:56:39
 * LastEditors : AndrewHu
 * LastEditTime: 2021-04-09 17:19:19
 * Description :
 ******************************************************************************/
#ifndef __AH_LIB_INCLUDES_H__
#define __AH_LIB_INCLUDES_H__
/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
#include <stdio.h>
#include <string.h>
/* Private typedef -----------------------------------------------------------*/
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
#ifndef assert_param
#ifdef USE_FULL_ASSERT
/*******************************************************************************
 * Function    : assert_param
 * Brief       : The assert_param macro is used for function's parameters check.
 * Parameter   : expr-If expr is false, it calls assert_failed function
 *               which reports the name of the source file and the source
 *               line number of the call that failed.
 *               If expr is true, it returns no value.
 * Returns     : None
 * Date        : 2020-05-11 15:22:18
 * Description :
 ******************************************************************************/
#define assert_param(expr) \
  \((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
void assert_failed(uint8_t *file, uint32_t line);
#else
#define assert_param(expr) ((void)0)
#endif /* USE_FULL_ASSERT */
#endif /* assert_param */
/* Private variables ---------------------------------------------------------*/
/* Private function ----------------------------------------------------------*/
/*******************************************************************************
 * Function    : AHL_Data_Arry2String
 * Brief       : 数组转换成字符串
 * Parameter   : {u8*} str-转换结果
 * Parameter   : {u8*} arry-转换前数据
 * Parameter   : {u8*} len-转换前(后)数据长度
 * Returns     :
 * Date        : 2020-04-06 15:10:23
 * Description : 0x15,0x14,0x13->"131415"，注意数组不能溢出
 ******************************************************************************/
void AHL_Data_Arry2String(u8 *str, u8 *arr, u8 *len);
/*******************************************************************************
 * Function    : AHL_Data_Arry2String_R
 * Brief       : 数组转换成字符串(倒序)
 * Parameter   : {u8*} str-转换结果
 * Parameter   : {u8*} arry-转换前数据
 * Parameter   : {u8*} len-转换前(后)数据长度
 * Returns     :
 * Date        : 2020-04-06 15:10:23
 * Description : 0x15,0x14,0x13->"131415"，注意数组不能溢出
 ******************************************************************************/
void AHL_Data_Arry2String_R(u8 *str, u8 *arr, u8 *len);
/*******************************************************************************
 * Function    : AHL_Data_Ascii2Hex
 * Brief       : ASCII码转换成16进制数
 * Parameter   : {u8} Ascii-ASCII码
 * Returns     : {u8} -16对应16进制数
 * Date        : 2020-03-24 18:23:15
 * Description : Convert Ascii to Hex,0x32->0x02
 ******************************************************************************/
u8 AHL_Data_Ascii2Hex(u8 Ascii);
/*******************************************************************************
 * Function    : AHL_Data_Ascii2Hex_Double
 * Brief       : 两个ASCII码转成一个16进制数
 * Parameter   : {u8} Ascii1
 * Parameter   : {u8} Ascii2
 * Returns     : {u8} hex
 * Date        : 2020-03-24 18:45:03
 * Description : Convert Ascii to Hex,{'1','2'}->0x12
 ******************************************************************************/
u8 AHL_Data_Ascii2Hex_Double(u8 Ascii1, u8 Ascii2);
/*******************************************************************************
 * Function    : AHL_Data_Hex2Ascii_4bit
 * Brief       : 16进制转换为ASCII
 * Parameter   : {u8} Hex-不大于0x0f
 * Returns     : {u8}
 * Date        : 2020-03-24 18:26:19
 * Description : Convert Hex to Ascii,0x02->0x32('2')
 ******************************************************************************/
u8 AHL_Data_Hex2Ascii_4bit(u8 Hex);
/*******************************************************************************
 * Function    : AHL_Data_Hex2Ascii_8bit
 * Brief       : 16进制转换为ASCII
 * Parameter   : {u8} Hex
 * Returns     : {u16}
 * Date        : 2020-03-24 18:26:19
 * Description : Convert Hex to Ascii,0x32->0x3332('32')
 ******************************************************************************/
u16 AHL_Data_Hex2Ascii_8bit(u8 Hex);
/*******************************************************************************
 * Function    : AHL_Data_Hex2Dec_8bit
 * Brief       : 16进制转换为10进制
 * Parameter   : {u8} hex
 * Returns     : {U16}
 * Date        : 2020-03-25 11:52:40
 * Description : Convert Hex to Dec,0x86(134)->0x0134
 ******************************************************************************/
u16 AHL_Data_Hex2Dec_8bit(u8 hex);
/*******************************************************************************
 * Function    : AHL_Data_Hex2Dec_16bit
 * Brief       : 16进制转换为10进制
 * Parameter   : {u8} hex
 * Returns     : {U32}
 * Date        : 2020-03-25 11:52:40
 * Description : Convert Hex to Dec,0xFFFF->0x00065535
 ******************************************************************************/
u32 AHL_Data_Hex2Dec_16bit(u16 hex);
/*******************************************************************************
 * Function    : AHL_Data_Hex2DecAscii_8bit
 * Brief       : 16进制转换为10进制，且转变为ASCII码
 * Parameter   : {u8} hex-The value to be converted
 * Parameter   : {u8*} string-retrun string index
 * Parameter   : {u8*} len-retrun lenght index
 * Returns     :
 * Date        : 2020-03-25 12:00:13
 * Description : Convert Hex to Dec(Ascii),0x86(134)->{'1','3','4'}
 ******************************************************************************/
void AHL_Data_Hex2DecAscii_8bit(u8 hex, u8 *string, u8 *len);
/*******************************************************************************
 * Function    : AHL_Data_Hex2DecAscii_16bit
 * Brief       : 16进制转换为10进制，且转变为ASCII码
 * Parameter   : {u16} hex-The value to be converted
 * Parameter   : {u8*} string-retrun string index
 * Parameter   : {u8*} len-retrun lenght index
 * Returns     :
 * Date        : 2020-03-25 12:00:13
 * Description : Convert Hex to Dec(Ascii),0xffff(134)->{'6','5','5','3','5'}
 ******************************************************************************/
void AHL_Data_Hex2DecAscii_16bit(u16 hex, u8 *string, u8 *len);
/*******************************************************************************
 * Function    : AHL_Data_String2Arry
 * Brief       : 字符串转换成数组
 * Parameter   : {u8*} arry-转换结果
 * Parameter   : {u8*} str-转换前数据
 * Parameter   : {u8*} len-转换前(后)数据长度
 * Returns     :
 * Date        : 2020-04-06 15:10:23
 * Description : "131415"->0x13,0x14,0x15
 ******************************************************************************/
void AHL_Data_String2Arry(u8 *arr, u8 *str, u8 *len);
/*******************************************************************************
 * Function    : AHL_Data_String2Arry_R
 * Brief       : 字符串转换成数组(倒序)
 * Parameter   : {u8*} arry-转换结果
 * Parameter   : {u8*} str-转换前数据
 * Parameter   : {u8*} len-转换前(后)数据长度
 * Returns     :
 * Date        : 2020-04-06 15:10:23
 * Description : "131415"->0x15,0x14,0x13，注意数组不能溢出
 ******************************************************************************/
void AHL_Data_String2Arry_R(u8 *arr, u8 *str, u8 *len);
/*******************************************************************************
 * Function    : AHL_Data_Compare
 * Brief       : 比较两个字符串是否一致
 * Parameter   : {u8*} arry1-数组1
 * Parameter   : {u8*} arry2-数组2
 * Parameter   : {u8} len-长度
 * Returns     : {u8} 0-不一致，1-一致
 * Date        : 2020-04-06 15:10:23
 * Description : 
 ******************************************************************************/
u8 AHL_Data_Compare(u8 *arry1, u8 *arry2, u8 len);
/* extern --------------------------------------------------------------------*/
#endif
